package com.yss.reportworld.domain;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yss.common.core.annotation.EasyExcel;
import com.yss.common.core.utils.easyexecl.IntegerConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.yss.common.core.web.domain.BaseEntity;

import javax.validation.constraints.Pattern;
import java.util.List;

/**
 * 对应索引信息对象 report_world_table_indexed
 *
 * @author yss
 * @date 2023-03-30
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("report_world_table_indexed")
public class TableIndexed extends BaseEntity {

    /**  */
    @ExcelIgnore
    @TableId("ID")
    private String id;

    /**
     * 关联表的主键
     */
    @ExcelProperty(value = "关联表的主键")
    @TableField("TABLE_ID")
    private String tableId;

    /**
     * 字段ID
     */
    @ExcelProperty(value = "字段ID")
    @TableField("INDEXED_COLUMN_NAME")
    private String indexedColumnName;

    /**
     * 索引名称
     */
    @ExcelProperty(value = "索引名称")
    @TableField("INDEXED_NAME")
    @Pattern(regexp = "^(?!_0-9)(?!.*?_$)[A-Z_0-9]{2,30}$", message = "索引名称必须以字母开头，且只能为（大写字母，数字，下滑线），不能已下划线和数字开头，不能已下划线结尾，长度在2到30之间!")
    private String indexedName;

    /**
     * 索引顺序
     */
    @ExcelProperty(value = "索引字段顺序")
    @TableField("INDEXED_COLUMN_SEQUENCE")
    private Integer indexedColumnSequence;

    /**
     * 索引类型
     */
    @ExcelProperty(value = "索引类型")
    @TableField("INDEXED_TYPE")
    private Integer indexedType;

    /**
     * 字段排序方式 ASC 或者 DESC
     */
    @ExcelProperty(value = "字段排序方式 ASC 或者 DESC")
    @TableField("INDEXED_ASC_DESC")
    private String indexedAscDesc;

    /**  */
    @ExcelProperty(value = "索引顺序")
    @TableField("INDEXED_SEQUENCE")
    private Integer indexedSequence;

    /**
     * 文件名称
     */
    @ExcelProperty(value = "文件名称")
    @TableField("FILE_NAME")
    private String fileName;

    /**  */
    @ExcelProperty(value = "状态", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "1=正常,2=停用")
    @TableField("STATUS")
    private Integer status;

    @ExcelIgnore
    @TableField(exist = false)
    private List<String> idList;
    /**
     * 历史版本号
     */
    @ExcelIgnore
    @TableField(exist = false)
    private String hisVersion;

}
